/*
 *  This file is part of Fax .NET.
 *
 *  Fax .NET is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU Lesser General Public License as published by
 *  the Free Software Foundation.
 * 
 *  Fax .NET is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU Lesser General Public License for more details.
 * 
 *  You should have received a copy of the GNU Lesser General Public License
 *  along with Fax .NET.  If not, see <http://www.gnu.org/licenses/>.
 */

using System;

namespace Tourreau.Gilles.FaxDotNet
{
    /// <summary>
    /// Represents the different status of a device fax.
    /// </summary>
    public enum FaxStatus
    {
        /// <summary>
        /// There is no status for device or fax job.
        /// </summary>
        None = 0,

        /// <summary>
        /// The device is dialing a fax number.
        /// </summary>
        Dialing = 0x20000001,

        /// <summary>
        /// The device is sending a fax document.
        /// </summary>
        Sending = 0x20000002,

        /// <summary>
        /// The device is receiving a fax document
        /// </summary>
        Receiving = 0x20000004,

        /// <summary>
        /// The device completed sending or receiving a fax transmission
        /// </summary>
        Completed = 0x20000008,
        
        /// <summary>
        /// The fax service processed the outbound fax document; the fax service provider will transmit the document.
        /// </summary>
        Handled = 0x20000010,
        
        /// <summary>
        /// The device is not available because it is in use by another application.
        /// </summary>
        Unvailable = 0x20000020,
        
        /// <summary>
        /// The device encountered a busy signal.
        /// </summary>
        Busy = 0x20000040,

        /// <summary>
        /// The receiving device did not answer the call.
        /// </summary>
        NoAnswer = 0x20000080,

        /// <summary>
        /// The device dialed an invalid fax number.
        /// </summary>
        BadAddress = 0x20000100,

        /// <summary>
        /// The sending device cannot complete the call because it does not detect a dial tone.
        /// </summary>
        NoDialTone = 0x20000200,

        /// <summary>
        /// The fax call was disconnected by the sender or the caller.
        /// </summary>
        Disconnected = 0x20000400,

        /// <summary>
        /// The device has encountered a fatal protocol error.
        /// </summary>
        FatalError = 0x20000800,

        /// <summary>
        /// The device received a call that was a data call or a voice call.
        /// </summary>
        NotFaxCall = 0x20001000,

        /// <summary>
        /// The device delayed a fax call because the sending device received a busy signal multiple times.
        /// The device cannot retry the call because dialing restrictions exist.
        /// (Some countries/regions restrict the number of retry attempts when a number is busy.
        /// </summary>
        CallDelayed = 0x20002000,

        /// <summary>
        /// The device is initializing a call.
        /// </summary>
        CallBlackListed = 0x20004000,

        /// <summary>
        /// The device is initializing a call.
        /// </summary>
        Initializing = 0x20008000,

        /// <summary>
        /// The device is offline and unavailable.
        /// </summary>
        OffLine = 0x20010000,

        /// <summary>
        /// The device is ringing.
        /// </summary>
        Ringing = 0x20020000,

        /// <summary>
        /// The device is available.
        /// </summary>
        Available = 0x20100000,

        /// <summary>
        /// The device is aborting a fax job.
        /// </summary>
        Abording = 0x20200000,

        /// <summary>
        /// The device is routing a received fax document.
        /// </summary>
        Routing = 0x20400000,

        /// <summary>
        /// The device answered a new call.
        /// </summary>
        Answered = 0x20800000,
    }
}
